package formatter

import (
	"encoding/json"
	"fmt"

	"sysinfo/internal/config"
	"sysinfo/internal/types"
)

// Format 根据指定格式格式化系统信息
func Format(info *types.SystemInfo, cfg *config.Config) (string, error) {
    switch cfg.Format {
    case "json":
        return FormatJSON(info)
    case "text":
        return FormatText(info), nil
    case "pretty":
        return FormatPretty(info), nil
    case "table":
        return FormatTable(info), nil
    default:
        return "", fmt.Errorf("未知格式: %s", cfg.Format)
    }
}

// FormatJSON 将信息格式化为JSON
func FormatJSON(info *types.SystemInfo) (string, error) {
	data, err := json.MarshalIndent(info, "", "  ")
	if err != nil {
		return "", fmt.Errorf("JSON序列化失败: %w", err)
	}
	return string(data), nil
}
